// GroupWhiteboard
//
// This class represents the whiteboard space for one customer group.
// It will be protected by a monitor and will be used by a customer group
// to aggregate data and make decisions.
//

#include "TicketStub.h"

class GroupWhiteboard {
  public:
    GroupWhiteboard();			// Initialize the GroupWhiteboard object
    ~GroupWhiteboard();			// De-allocate bitmap
    
    int getGroupSize(); 		// returns the size of the associated group
    int getPopcornTally(); 		// returns current number of popcorn to purchase
	int getSodaTally(); 		// returns current number of soda to purchase
    int getBathroomTally(); 	// returns current number of customers who need to use the bathroom
    int getNumModified();		// returns the current number of customers who have modified the whiteboard
	int getState();				// returns the state of whether to get food or go to the bathroom
	TicketStub* getTicketStub(); // returns TicketStub currently held by group
	bool getSomeoneNeedsBathroom(); // returns whether or not someone needs to go to the bathroom or not
    
	void setGroupSize(int groupSize); 			// sets the size of the associated group
    void setPopcornTally(int popcornTally); 	// sets the current number of popcorn to purchase
	void setSodaTally(int sodaTally); 			// sets the current number of soda to purchase
    void setBathroomTally(int bathroomTally); 	// sets the current number of customers who need to use the bathroom
    void setNumModified(int numModified);		// sets to the current number of customers who have modified the whiteboard
	void setTicketStub(TicketStub* stub); 		// sets the TicketStub currently held by group
	void setState(int st);						// sets the state for the customers conversation
	void setSomeoneNeedsBathroom(bool value);
	
	void incrementPopcornTally(int popcornTally); 	// adds to the current number of popcorn to purchase
	void incrementSodaTally(int sodaTally); 		// adds to the current number of soda to purchase
    void incrementBathroomTally(int bathroomTally); // adds to the current number of customers who need to use the bathroom
	void incrementNumModified(); 					// adds 1 to the current number of customers who have modified the whiteboard
	

	
  private:
    int groupSize;			// the size of the associated group
	int popcornTally;		// current number of popcorn to purchase
	int sodaTally;			// current number of soda to purchase
	int bathroomTally;		// current number of people who need to use the bathroom
	int numModified;		// number of customers that have modified the whiteboard so far
	int state;				// state for food or bathroom 0-food 1-bathroom
	TicketStub* ticketStub; // currently held ticketStub
	bool someoneNeedsBathroom; //bool of whether or not someone needs to go to the bathroom
};
